package com.aier.user.service;

import java.util.List;
import java.util.Map;

import com.aier.school.entity.School;
import com.aier.user.entity.userapp.Bill;
import com.aier.user.entity.userapp.Commidity;
import com.aier.user.entity.userapp.UserModule;

public interface IUserBuyService {
    
    // 订单状态:0:正在支付,1:支付成功,-1:支付失败
    short BILL_DOING = 0;    
    short BILL_SUCCESS = 1;    
    short BILL_FAIL = -1;    

    
    /**
     * 查询用户app所有模块状态(Map<模块id,状态>) 状态: 1:有效,0:服务未开通
     * @param uid
     */
    Map<Long,Short> searchUserModState(Long uid);
    
    /**
     * 生成订单
     * @param uid
     * @param commidity_id
     * @param com_num
     * @return
     */
    Bill insertBill(Long uid,Long commidity_id,int com_num);

    /**
     * 订单支付成功,所需要做的操作
     * @param bill_id
     */
    void updateBuyServiceSuccess(Long bill_id);

    /**
     * 订单支付失败,所需要做的操作
     * @param bill_id
     */
    void updateBuyServiceFail(Long bill_id);

    /**
     * 查询模块的商品列表
     * @param mid
     * @return
     */
    List<Commidity> searchCommidityList(long mid);

    /**
     * 查询订单信息
     * @param bill_id
     * @return
     */
    Bill searchBillById(Long bill_id);
    
    /**
     * 查询商品信息
     */
    Commidity searchCommidity(Long cid);
    
    /**
     * 查询所有商品
     * @param page
     * @param page_size
     * @param sortable
     * @return
     */
    Map<String, Object> searchCommidityAll(int page, int page_size, int sortable);

    /**
     * 查询用户的订单记录
     * @return
     */
    Map<String, Object> searchUserBillList(int page, int page_size, Long uid);

    /**
     * 删除订单
     */
    int deleteBill(Long bill_id);

    /**
     * 查询用户模块
     * @return
     */
    UserModule searchUserModule(Long uid, Long mid);
    
    /**
     * 查询用户购买家校联系薄服务的有效期
     * @param uid
     * @return
     */
    String searchEdate(Long uid);
    
    /**
     * 查询宝宝所在学校的付费方式
     * @param uid
     * @return
     */
    int searchSchoolBuyMethod(Long uid);
    /**
     * 查询教师所在学校信息
     * @param cid
     * @return
     */
    School searchSchoolMessageCount(Long cid);

    /**
     * 查询学校信息(剩余短信数量)
     * @param cid
     * @return
     */
    School searchSchoolMessageCountSid(Integer sid);
    
}
